<!doctype html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8" />
    <title>dependency graph</title>
    <style>
      .node:active path,
.node:hover path,
.node.current path,
.node:active polygon,
.node:hover polygon,
.node.current polygon {
  stroke: fuchsia;
  stroke-width: 2;
}

.edge:active path,
.edge:hover path,
.edge.current path,
.edge:active ellipse,
.edge:hover ellipse,
.edge.current ellipse {
  stroke: url(#edgeGradient);
  stroke-width: 3;
  stroke-opacity: 1;
}

.edge:active polygon,
.edge:hover polygon,
.edge.current polygon {
  stroke: fuchsia;
  stroke-width: 3;
  fill: fuchsia;
  stroke-opacity: 1;
  fill-opacity: 1;
}

.edge:active text,
.edge:hover text {
  fill: fuchsia;
}

.cluster path {
  stroke-width: 3;
}

.cluster:active path,
.cluster:hover path {
  fill: #ffff0011;
}

div.hint {
  background-color: #000000aa;
  color: white;
  font-family: Arial, Helvetica, sans-serif;
  border-radius: 1rem;
  position: fixed;
  top: calc(50% - 4em);
  right: calc(50% - 10em);
  border: none;
  padding: 1em 3em 1em 1em;
}

.hint button {
  position: absolute;
  font-weight: bolder;
  right: 0.6em;
  top: 0.6em;
  color: inherit;
  background-color: inherit;
  border: 1px solid currentColor;
  border-radius: 1em;
  margin-left: 0.6em;
}

.hint a {
  color: inherit;
}

#button_help {
  color: white;
  background-color: #00000011;
  border-radius: 1em;
  position: fixed;
  top: 1em;
  right: 1em;
  font-size: 24pt;
  font-weight: bolder;
  width: 2em;
  height: 2em;
  border: none;
}

#button_help:hover {
  cursor: pointer;
  background-color: #00000077;
}

@media print {
  #button_help {
    display: none;
  }

  div.hint {
    display: none;
  }
}

    </style>
  </head>
  <body>
    <button id="button_help">?</button>
    <div id="hints" class="hint" style="display: none">
      <button id="close-hints">x</button>
      <span id="hint-text"></span>
      <ul>
        <li><b>Hover</b> - highlight</li>
        <li><b>Right-click</b> - pin highlight</li>
        <li><b>ESC</b> - clear</li>
      </ul>
    </div>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
 "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 14.0.4 (20251115.1723)
 -->
<!-- Title: dependency&#45;cruiser output Pages: 1 -->
<svg width="1027pt" height="654pt"
 viewBox="0.00 0.00 1027.00 654.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 649.75)">
<title>dependency&#45;cruiser output</title>
<polygon fill="white" stroke="none" points="-4,4 -4,-649.75 1022.5,-649.75 1022.5,4 -4,4"/>
<g id="clust1" class="cluster">
<title>cluster_@typescript&#45;eslint</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M492.5,-537.88C492.5,-537.88 563.25,-537.88 563.25,-537.88 569.25,-537.88 575.25,-543.88 575.25,-549.88 575.25,-549.88 575.25,-577.88 575.25,-577.88 575.25,-583.88 569.25,-589.88 563.25,-589.88 563.25,-589.88 492.5,-589.88 492.5,-589.88 486.5,-589.88 480.5,-583.88 480.5,-577.88 480.5,-577.88 480.5,-549.88 480.5,-549.88 480.5,-543.88 486.5,-537.88 492.5,-537.88"/>
<text xml:space="preserve" text-anchor="middle" x="527.88" y="-577.33" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">@typescript&#45;eslint</text>
</g>
<g id="clust2" class="cluster">
<title>cluster_config&#45;utl</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M183.75,-278.88C183.75,-278.88 343.25,-278.88 343.25,-278.88 349.25,-278.88 355.25,-284.88 355.25,-290.88 355.25,-290.88 355.25,-438.88 355.25,-438.88 355.25,-444.88 349.25,-450.88 343.25,-450.88 343.25,-450.88 183.75,-450.88 183.75,-450.88 177.75,-450.88 171.75,-444.88 171.75,-438.88 171.75,-438.88 171.75,-290.88 171.75,-290.88 171.75,-284.88 177.75,-278.88 183.75,-278.88"/>
<text xml:space="preserve" text-anchor="middle" x="263.5" y="-438.32" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">config&#45;utl</text>
</g>
<g id="clust3" class="cluster">
<title>cluster_node_modules</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M486.25,-357.88C486.25,-357.88 568.5,-357.88 568.5,-357.88 574.5,-357.88 580.5,-363.88 580.5,-369.88 580.5,-369.88 580.5,-517.88 580.5,-517.88 580.5,-523.88 574.5,-529.88 568.5,-529.88 568.5,-529.88 486.25,-529.88 486.25,-529.88 480.25,-529.88 474.25,-523.88 474.25,-517.88 474.25,-517.88 474.25,-369.88 474.25,-369.88 474.25,-363.88 480.25,-357.88 486.25,-357.88"/>
<text xml:space="preserve" text-anchor="middle" x="527.38" y="-517.33" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">node_modules</text>
</g>
<g id="clust4" class="cluster">
<title>cluster_plugins</title>
<path fill="#ffffff" stroke="black" stroke-width="2" d="M20,-183.88C20,-183.88 151.75,-183.88 151.75,-183.88 157.75,-183.88 163.75,-189.88 163.75,-195.88 163.75,-195.88 163.75,-283.88 163.75,-283.88 163.75,-289.88 157.75,-295.88 151.75,-295.88 151.75,-295.88 20,-295.88 20,-295.88 14,-295.88 8,-289.88 8,-283.88 8,-283.88 8,-195.88 8,-195.88 8,-189.88 14,-183.88 20,-183.88"/>
<text xml:space="preserve" text-anchor="middle" x="85.88" y="-283.32" font-family="Helvetica,sans-Serif" font-weight="bold" font-size="9.00">plugins</text>
</g>
<!-- @typescript&#45;eslint/parser -->
<g id="node1" class="node">
<title>@typescript&#45;eslint/parser</title>
<g id="a_node1"><a xlink:title="parser">
<path fill="#ffffcc" stroke="black" d="M548.46,-563.75C548.46,-563.75 506.29,-563.75 506.29,-563.75 503.33,-563.75 500.38,-560.79 500.38,-557.83 500.38,-557.83 500.38,-551.92 500.38,-551.92 500.38,-548.96 503.33,-546 506.29,-546 506.29,-546 548.46,-546 548.46,-546 551.42,-546 554.38,-548.96 554.38,-551.92 554.38,-551.92 554.38,-557.83 554.38,-557.83 554.38,-560.79 551.42,-563.75 548.46,-563.75"/>
<text xml:space="preserve" text-anchor="start" x="514.25" y="-551.2" font-family="Helvetica,sans-Serif" font-size="9.00">parser</text>
</a>
</g>
</g>
<!-- baseline&#45;violations.d.mts -->
<g id="node2" class="node">
<title>baseline&#45;violations.d.mts</title>
<g id="a_node2"><a xlink:href="baseline-violations.d.mts" xlink:title="baseline&#45;violations.d.mts">
<path fill="#ddfeff" stroke="black" d="M699.83,-245.75C699.83,-245.75 594.42,-245.75 594.42,-245.75 591.46,-245.75 588.5,-242.79 588.5,-239.83 588.5,-239.83 588.5,-233.92 588.5,-233.92 588.5,-230.96 591.46,-228 594.42,-228 594.42,-228 699.83,-228 699.83,-228 702.79,-228 705.75,-230.96 705.75,-233.92 705.75,-233.92 705.75,-239.83 705.75,-239.83 705.75,-242.79 702.79,-245.75 699.83,-245.75"/>
<text xml:space="preserve" text-anchor="start" x="596.5" y="-233.2" font-family="Helvetica,sans-Serif" font-size="9.00">baseline&#45;violations.d.mts</text>
</a>
</g>
</g>
<!-- violations.d.mts -->
<g id="node3" class="node">
<title>violations.d.mts</title>
<g id="a_node3"><a xlink:href="violations.d.mts" xlink:title="violations.d.mts">
<path fill="#ddfeff" stroke="black" d="M794.46,-256.75C794.46,-256.75 727.29,-256.75 727.29,-256.75 724.33,-256.75 721.38,-253.79 721.38,-250.83 721.38,-250.83 721.38,-244.92 721.38,-244.92 721.38,-241.96 724.33,-239 727.29,-239 727.29,-239 794.46,-239 794.46,-239 797.42,-239 800.38,-241.96 800.38,-244.92 800.38,-244.92 800.38,-250.83 800.38,-250.83 800.38,-253.79 797.42,-256.75 794.46,-256.75"/>
<text xml:space="preserve" text-anchor="start" x="729.38" y="-244.2" font-family="Helvetica,sans-Serif" font-size="9.00">violations.d.mts</text>
</a>
</g>
</g>
<!-- baseline&#45;violations.d.mts&#45;&gt;violations.d.mts -->
<g id="edge1" class="edge">
<title>baseline&#45;violations.d.mts&#45;&gt;violations.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M706.01,-233.5C741.74,-233.5 780.5,-233.5 780.5,-233.5 780.5,-233.5 780.5,-234.02 780.5,-234.02"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="778.4,-231.18 780.5,-237.18 782.6,-231.18 778.4,-231.18"/>
</g>
<!-- rule&#45;summary.d.mts -->
<g id="node16" class="node">
<title>rule&#45;summary.d.mts</title>
<g id="a_node16"><a xlink:href="rule-summary.d.mts" xlink:title="rule&#45;summary.d.mts">
<path fill="#ddfeff" stroke="black" d="M906.33,-267.75C906.33,-267.75 821.92,-267.75 821.92,-267.75 818.96,-267.75 816,-264.79 816,-261.83 816,-261.83 816,-255.92 816,-255.92 816,-252.96 818.96,-250 821.92,-250 821.92,-250 906.33,-250 906.33,-250 909.29,-250 912.25,-252.96 912.25,-255.92 912.25,-255.92 912.25,-261.83 912.25,-261.83 912.25,-264.79 909.29,-267.75 906.33,-267.75"/>
<text xml:space="preserve" text-anchor="start" x="824" y="-255.2" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;summary.d.mts</text>
</a>
</g>
</g>
<!-- violations.d.mts&#45;&gt;rule&#45;summary.d.mts -->
<g id="edge53" class="edge">
<title>violations.d.mts&#45;&gt;rule&#45;summary.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M800.71,-244.5C835.51,-244.5 880.5,-244.5 880.5,-244.5 880.5,-244.5 880.5,-245.02 880.5,-245.02"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="878.4,-242.18 880.5,-248.18 882.6,-242.18 878.4,-242.18"/>
</g>
<!-- shared&#45;types.d.mts -->
<g id="node17" class="node">
<title>shared&#45;types.d.mts</title>
<g id="a_node17"><a xlink:href="shared-types.d.mts" xlink:title="shared&#45;types.d.mts">
<path fill="#ddfeff" stroke="black" d="M1012.58,-174.75C1012.58,-174.75 931.17,-174.75 931.17,-174.75 928.21,-174.75 925.25,-171.79 925.25,-168.83 925.25,-168.83 925.25,-162.92 925.25,-162.92 925.25,-159.96 928.21,-157 931.17,-157 931.17,-157 1012.58,-157 1012.58,-157 1015.54,-157 1018.5,-159.96 1018.5,-162.92 1018.5,-162.92 1018.5,-168.83 1018.5,-168.83 1018.5,-171.79 1015.54,-174.75 1012.58,-174.75"/>
<text xml:space="preserve" text-anchor="start" x="933.25" y="-162.2" font-family="Helvetica,sans-Serif" font-size="9.00">shared&#45;types.d.mts</text>
</a>
</g>
</g>
<!-- violations.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge54" class="edge">
<title>violations.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M741.5,-238.66C741.5,-218.6 741.5,-172.75 741.5,-172.75 741.5,-172.75 917.46,-172.75 917.46,-172.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.46,-174.85 923.46,-172.75 917.46,-170.65 917.46,-174.85"/>
</g>
<!-- cache&#45;options.d.mts -->
<g id="node4" class="node">
<title>cache&#45;options.d.mts</title>
<g id="a_node4"><a xlink:href="cache-options.d.mts" xlink:title="cache&#45;options.d.mts">
<path fill="#ddfeff" stroke="black" d="M690.08,-103.75C690.08,-103.75 604.17,-103.75 604.17,-103.75 601.21,-103.75 598.25,-100.79 598.25,-97.83 598.25,-97.83 598.25,-91.92 598.25,-91.92 598.25,-88.96 601.21,-86 604.17,-86 604.17,-86 690.08,-86 690.08,-86 693.04,-86 696,-88.96 696,-91.92 696,-91.92 696,-97.83 696,-97.83 696,-100.79 693.04,-103.75 690.08,-103.75"/>
<text xml:space="preserve" text-anchor="start" x="606.25" y="-91.2" font-family="Helvetica,sans-Serif" font-size="9.00">cache&#45;options.d.mts</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;babel&#45;config.d.mts -->
<g id="node5" class="node">
<title>config&#45;utl/extract&#45;babel&#45;config.d.mts</title>
<g id="a_node5"><a xlink:href="config-utl/extract-babel-config.d.mts" xlink:title="extract&#45;babel&#45;config.d.mts">
<path fill="#ccffcc" stroke="black" d="M318.08,-304.75C318.08,-304.75 208.92,-304.75 208.92,-304.75 205.96,-304.75 203,-301.79 203,-298.83 203,-298.83 203,-292.92 203,-292.92 203,-289.96 205.96,-287 208.92,-287 208.92,-287 318.08,-287 318.08,-287 321.04,-287 324,-289.96 324,-292.92 324,-292.92 324,-298.83 324,-298.83 324,-301.79 321.04,-304.75 318.08,-304.75"/>
<text xml:space="preserve" text-anchor="start" x="211" y="-292.2" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;babel&#45;config.d.mts</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;depcruise&#45;config.d.mts -->
<g id="node6" class="node">
<title>config&#45;utl/extract&#45;depcruise&#45;config.d.mts</title>
<g id="a_node6"><a xlink:href="config-utl/extract-depcruise-config.d.mts" xlink:title="extract&#45;depcruise&#45;config.d.mts">
<path fill="#ddfeff" stroke="black" d="M326.71,-334.75C326.71,-334.75 200.29,-334.75 200.29,-334.75 197.33,-334.75 194.38,-331.79 194.38,-328.83 194.38,-328.83 194.38,-322.92 194.38,-322.92 194.38,-319.96 197.33,-317 200.29,-317 200.29,-317 326.71,-317 326.71,-317 329.67,-317 332.62,-319.96 332.62,-322.92 332.62,-322.92 332.62,-328.83 332.62,-328.83 332.62,-331.79 329.67,-334.75 326.71,-334.75"/>
<text xml:space="preserve" text-anchor="start" x="202.38" y="-322.2" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;depcruise&#45;config.d.mts</text>
</a>
</g>
</g>
<!-- configuration.d.mts -->
<g id="node7" class="node">
<title>configuration.d.mts</title>
<g id="a_node7"><a xlink:href="configuration.d.mts" xlink:title="configuration.d.mts">
<path fill="#ddfeff" stroke="black" d="M455.46,-223.75C455.46,-223.75 374.04,-223.75 374.04,-223.75 371.08,-223.75 368.12,-220.79 368.12,-217.83 368.12,-217.83 368.12,-211.92 368.12,-211.92 368.12,-208.96 371.08,-206 374.04,-206 374.04,-206 455.46,-206 455.46,-206 458.42,-206 461.38,-208.96 461.38,-211.92 461.38,-211.92 461.38,-217.83 461.38,-217.83 461.38,-220.79 458.42,-223.75 455.46,-223.75"/>
<text xml:space="preserve" text-anchor="start" x="376.12" y="-211.2" font-family="Helvetica,sans-Serif" font-size="9.00">configuration.d.mts</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;depcruise&#45;config.d.mts&#45;&gt;configuration.d.mts -->
<g id="edge2" class="edge">
<title>config&#45;utl/extract&#45;depcruise&#45;config.d.mts&#45;&gt;configuration.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M328.5,-316.87C328.5,-290.6 328.5,-215.88 328.5,-215.88 328.5,-215.88 360.33,-215.88 360.33,-215.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="360.33,-217.98 366.33,-215.88 360.33,-213.78 360.33,-217.98"/>
</g>
<!-- options.d.mts -->
<g id="node9" class="node">
<title>options.d.mts</title>
<g id="a_node9"><a xlink:href="options.d.mts" xlink:title="options.d.mts">
<path fill="#ddfeff" stroke="black" d="M556.46,-167.75C556.46,-167.75 498.29,-167.75 498.29,-167.75 495.33,-167.75 492.38,-164.79 492.38,-161.83 492.38,-161.83 492.38,-155.92 492.38,-155.92 492.38,-152.96 495.33,-150 498.29,-150 498.29,-150 556.46,-150 556.46,-150 559.42,-150 562.38,-152.96 562.38,-155.92 562.38,-155.92 562.38,-161.83 562.38,-161.83 562.38,-164.79 559.42,-167.75 556.46,-167.75"/>
<text xml:space="preserve" text-anchor="start" x="500.38" y="-155.2" font-family="Helvetica,sans-Serif" font-size="9.00">options.d.mts</text>
</a>
</g>
</g>
<!-- configuration.d.mts&#45;&gt;options.d.mts -->
<g id="edge6" class="edge">
<title>configuration.d.mts&#45;&gt;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M461.7,-208.44C487.58,-208.44 514.5,-208.44 514.5,-208.44 514.5,-208.44 514.5,-175.48 514.5,-175.48"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="516.6,-175.48 514.5,-169.48 512.4,-175.48 516.6,-175.48"/>
</g>
<!-- rule&#45;set.d.mts -->
<g id="node14" class="node">
<title>rule&#45;set.d.mts</title>
<g id="a_node14"><a xlink:href="rule-set.d.mts" xlink:title="rule&#45;set.d.mts">
<path fill="#ddfeff" stroke="black" d="M676.58,-215.75C676.58,-215.75 617.67,-215.75 617.67,-215.75 614.71,-215.75 611.75,-212.79 611.75,-209.83 611.75,-209.83 611.75,-203.92 611.75,-203.92 611.75,-200.96 614.71,-198 617.67,-198 617.67,-198 676.58,-198 676.58,-198 679.54,-198 682.5,-200.96 682.5,-203.92 682.5,-203.92 682.5,-209.83 682.5,-209.83 682.5,-212.79 679.54,-215.75 676.58,-215.75"/>
<text xml:space="preserve" text-anchor="start" x="619.75" y="-203.2" font-family="Helvetica,sans-Serif" font-size="9.00">rule&#45;set.d.mts</text>
</a>
</g>
</g>
<!-- configuration.d.mts&#45;&gt;rule&#45;set.d.mts -->
<g id="edge7" class="edge">
<title>configuration.d.mts&#45;&gt;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M461.77,-210.88C461.77,-210.88 604.04,-210.88 604.04,-210.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="604.04,-212.98 610.04,-210.88 604.04,-208.78 604.04,-212.98"/>
</g>
<!-- config&#45;utl/extract&#45;depcruise&#45;options.d.mts -->
<g id="node8" class="node">
<title>config&#45;utl/extract&#45;depcruise&#45;options.d.mts</title>
<g id="a_node8"><a xlink:href="config-utl/extract-depcruise-options.d.mts" xlink:title="extract&#45;depcruise&#45;options.d.mts">
<path fill="#ddfeff" stroke="black" d="M329.33,-364.75C329.33,-364.75 197.67,-364.75 197.67,-364.75 194.71,-364.75 191.75,-361.79 191.75,-358.83 191.75,-358.83 191.75,-352.92 191.75,-352.92 191.75,-349.96 194.71,-347 197.67,-347 197.67,-347 329.33,-347 329.33,-347 332.29,-347 335.25,-349.96 335.25,-352.92 335.25,-352.92 335.25,-358.83 335.25,-358.83 335.25,-361.79 332.29,-364.75 329.33,-364.75"/>
<text xml:space="preserve" text-anchor="start" x="199.75" y="-352.2" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;depcruise&#45;options.d.mts</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;depcruise&#45;options.d.mts&#45;&gt;options.d.mts -->
<g id="edge3" class="edge">
<title>config&#45;utl/extract&#45;depcruise&#45;options.d.mts&#45;&gt;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M335.56,-355.5C417.63,-355.5 540.5,-355.5 540.5,-355.5 540.5,-355.5 540.5,-175.61 540.5,-175.61"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="542.6,-175.61 540.5,-169.61 538.4,-175.61 542.6,-175.61"/>
</g>
<!-- options.d.mts&#45;&gt;baseline&#45;violations.d.mts -->
<g id="edge26" class="edge">
<title>options.d.mts&#45;&gt;baseline&#45;violations.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M562.65,-165.75C581.35,-165.75 600.5,-165.75 600.5,-165.75 600.5,-165.75 600.5,-220.06 600.5,-220.06"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="598.4,-220.06 600.5,-226.06 602.6,-220.06 598.4,-220.06"/>
</g>
<!-- options.d.mts&#45;&gt;cache&#45;options.d.mts -->
<g id="edge27" class="edge">
<title>options.d.mts&#45;&gt;cache&#45;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M527.5,-149.6C527.5,-132.53 527.5,-97.83 527.5,-97.83 527.5,-97.83 590.26,-97.83 590.26,-97.83"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="590.26,-99.93 596.26,-97.83 590.26,-95.73 590.26,-99.93"/>
</g>
<!-- options.d.mts&#45;&gt;rule&#45;set.d.mts -->
<g id="edge30" class="edge">
<title>options.d.mts&#45;&gt;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M548.5,-168.19C548.5,-181.08 548.5,-202.8 548.5,-202.8 548.5,-202.8 604.01,-202.8 604.01,-202.8"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="604.01,-204.9 610.01,-202.8 604.01,-200.7 604.01,-204.9"/>
</g>
<!-- options.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge31" class="edge">
<title>options.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M562.63,-163.75C562.63,-163.75 917.3,-163.75 917.3,-163.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.3,-165.85 923.3,-163.75 917.3,-161.65 917.3,-165.85"/>
</g>
<!-- filter&#45;types.d.mts -->
<g id="node26" class="node">
<title>filter&#45;types.d.mts</title>
<g id="a_node26"><a xlink:href="filter-types.d.mts" xlink:title="filter&#45;types.d.mts">
<path fill="#ddfeff" stroke="black" d="M795.96,-129.75C795.96,-129.75 725.79,-129.75 725.79,-129.75 722.83,-129.75 719.88,-126.79 719.88,-123.83 719.88,-123.83 719.88,-117.92 719.88,-117.92 719.88,-114.96 722.83,-112 725.79,-112 725.79,-112 795.96,-112 795.96,-112 798.92,-112 801.88,-114.96 801.88,-117.92 801.88,-117.92 801.88,-123.83 801.88,-123.83 801.88,-126.79 798.92,-129.75 795.96,-129.75"/>
<text xml:space="preserve" text-anchor="start" x="727.88" y="-117.2" font-family="Helvetica,sans-Serif" font-size="9.00">filter&#45;types.d.mts</text>
</a>
</g>
</g>
<!-- options.d.mts&#45;&gt;filter&#45;types.d.mts -->
<g id="edge28" class="edge">
<title>options.d.mts&#45;&gt;filter&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M562.68,-157.31C615.9,-157.31 710.5,-157.31 710.5,-157.31 710.5,-157.31 710.5,-125.17 710.5,-125.17 710.5,-125.17 712.23,-125.17 712.23,-125.17"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="712.23,-127.27 718.23,-125.17 712.23,-123.07 712.23,-127.27"/>
</g>
<!-- reporter&#45;options.d.mts -->
<g id="node27" class="node">
<title>reporter&#45;options.d.mts</title>
<g id="a_node27"><a xlink:href="reporter-options.d.mts" xlink:title="reporter&#45;options.d.mts">
<path fill="#ddfeff" stroke="black" d="M693.83,-133.75C693.83,-133.75 600.42,-133.75 600.42,-133.75 597.46,-133.75 594.5,-130.79 594.5,-127.83 594.5,-127.83 594.5,-121.92 594.5,-121.92 594.5,-118.96 597.46,-116 600.42,-116 600.42,-116 693.83,-116 693.83,-116 696.79,-116 699.75,-118.96 699.75,-121.92 699.75,-121.92 699.75,-127.83 699.75,-127.83 699.75,-130.79 696.79,-133.75 693.83,-133.75"/>
<text xml:space="preserve" text-anchor="start" x="602.5" y="-121.2" font-family="Helvetica,sans-Serif" font-size="9.00">reporter&#45;options.d.mts</text>
</a>
</g>
</g>
<!-- options.d.mts&#45;&gt;reporter&#45;options.d.mts -->
<g id="edge29" class="edge">
<title>options.d.mts&#45;&gt;reporter&#45;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M562.78,-154.88C583.45,-154.88 605.5,-154.88 605.5,-154.88 605.5,-154.88 605.5,-141.55 605.5,-141.55"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="607.6,-141.55 605.5,-135.55 603.4,-141.55 607.6,-141.55"/>
</g>
<!-- config&#45;utl/extract&#45;ts&#45;config.d.mts -->
<g id="node10" class="node">
<title>config&#45;utl/extract&#45;ts&#45;config.d.mts</title>
<g id="a_node10"><a xlink:href="config-utl/extract-ts-config.d.mts" xlink:title="extract&#45;ts&#45;config.d.mts">
<path fill="#ddfeff" stroke="black" d="M309.83,-424.75C309.83,-424.75 217.17,-424.75 217.17,-424.75 214.21,-424.75 211.25,-421.79 211.25,-418.83 211.25,-418.83 211.25,-412.92 211.25,-412.92 211.25,-409.96 214.21,-407 217.17,-407 217.17,-407 309.83,-407 309.83,-407 312.79,-407 315.75,-409.96 315.75,-412.92 315.75,-412.92 315.75,-418.83 315.75,-418.83 315.75,-421.79 312.79,-424.75 309.83,-424.75"/>
<text xml:space="preserve" text-anchor="start" x="219.25" y="-412.2" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;ts&#45;config.d.mts</text>
</a>
</g>
</g>
<!-- node_modules/typescript -->
<g id="node11" class="node">
<title>node_modules/typescript</title>
<g id="a_node11"><a xlink:href="https://www.npmjs.com/package/typescript" xlink:title="typescript">
<polygon fill="#c40b0a" fill-opacity="0.101961" stroke="black" points="554.88,-443.75 501.85,-443.75 499.88,-441.78 499.88,-426 552.9,-426 554.88,-427.97 554.88,-443.75"/>
<polyline fill="none" stroke="black" points="552.9,-441.78 499.88,-441.78"/>
<polyline fill="none" stroke="black" points="552.9,-441.78 552.9,-426"/>
<polyline fill="none" stroke="black" points="552.9,-441.78 554.88,-443.75"/>
<text xml:space="preserve" text-anchor="start" x="507.88" y="-431.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c40b0a">typescript</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;ts&#45;config.d.mts&#45;&gt;node_modules/typescript -->
<g id="edge4" class="edge">
<title>config&#45;utl/extract&#45;ts&#45;config.d.mts&#45;&gt;node_modules/typescript</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M315.97,-419.25C392.96,-419.25 527.5,-419.25 527.5,-419.25 527.5,-419.25 527.5,-419.89 527.5,-419.89"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="525.4,-418.09 527.5,-424.09 529.6,-418.09 525.4,-418.09"/>
</g>
<!-- config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.d.mts -->
<g id="node12" class="node">
<title>config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.d.mts</title>
<g id="a_node12"><a xlink:href="config-utl/extract-webpack-resolve-config.d.mts" xlink:title="extract&#45;webpack&#45;resolve&#45;config.d.mts">
<path fill="#ddfeff" stroke="black" d="M341.33,-394.75C341.33,-394.75 185.67,-394.75 185.67,-394.75 182.71,-394.75 179.75,-391.79 179.75,-388.83 179.75,-388.83 179.75,-382.92 179.75,-382.92 179.75,-379.96 182.71,-377 185.67,-377 185.67,-377 341.33,-377 341.33,-377 344.29,-377 347.25,-379.96 347.25,-382.92 347.25,-382.92 347.25,-388.83 347.25,-388.83 347.25,-391.79 344.29,-394.75 341.33,-394.75"/>
<text xml:space="preserve" text-anchor="start" x="187.75" y="-382.2" font-family="Helvetica,sans-Serif" font-size="9.00">extract&#45;webpack&#45;resolve&#45;config.d.mts</text>
</a>
</g>
</g>
<!-- node_modules/enhanced&#45;resolve -->
<g id="node13" class="node">
<title>node_modules/enhanced&#45;resolve</title>
<g id="a_node13"><a xlink:href="https://www.npmjs.com/package/enhanced-resolve" xlink:title="enhanced&#45;resolve">
<polygon fill="#c40b0a" fill-opacity="0.101961" stroke="black" points="572.5,-413.75 484.22,-413.75 482.25,-411.78 482.25,-396 570.53,-396 572.5,-397.97 572.5,-413.75"/>
<polyline fill="none" stroke="black" points="570.53,-411.78 482.25,-411.78"/>
<polyline fill="none" stroke="black" points="570.53,-411.78 570.53,-396"/>
<polyline fill="none" stroke="black" points="570.53,-411.78 572.5,-413.75"/>
<text xml:space="preserve" text-anchor="start" x="490.25" y="-401.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c40b0a">enhanced&#45;resolve</text>
</a>
</g>
</g>
<!-- config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.d.mts&#45;&gt;node_modules/enhanced&#45;resolve -->
<g id="edge5" class="edge">
<title>config&#45;utl/extract&#45;webpack&#45;resolve&#45;config.d.mts&#45;&gt;node_modules/enhanced&#45;resolve</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M347.75,-389.25C410.55,-389.25 485.5,-389.25 485.5,-389.25 485.5,-389.25 485.5,-389.89 485.5,-389.89"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="483.4,-388.09 485.5,-394.09 487.6,-388.09 483.4,-388.09"/>
</g>
<!-- rule&#45;set.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge39" class="edge">
<title>rule&#45;set.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M658.5,-197.65C658.5,-187.24 658.5,-171.75 658.5,-171.75 658.5,-171.75 917.45,-171.75 917.45,-171.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.45,-173.85 923.45,-171.75 917.45,-169.65 917.45,-173.85"/>
</g>
<!-- restrictions.d.mts -->
<g id="node31" class="node">
<title>restrictions.d.mts</title>
<g id="a_node31"><a xlink:href="restrictions.d.mts" xlink:title="restrictions.d.mts">
<path fill="#ddfeff" stroke="black" d="M797.08,-159.75C797.08,-159.75 724.67,-159.75 724.67,-159.75 721.71,-159.75 718.75,-156.79 718.75,-153.83 718.75,-153.83 718.75,-147.92 718.75,-147.92 718.75,-144.96 721.71,-142 724.67,-142 724.67,-142 797.08,-142 797.08,-142 800.04,-142 803,-144.96 803,-147.92 803,-147.92 803,-153.83 803,-153.83 803,-156.79 800.04,-159.75 797.08,-159.75"/>
<text xml:space="preserve" text-anchor="start" x="726.75" y="-147.2" font-family="Helvetica,sans-Serif" font-size="9.00">restrictions.d.mts</text>
</a>
</g>
</g>
<!-- rule&#45;set.d.mts&#45;&gt;restrictions.d.mts -->
<g id="edge38" class="edge">
<title>rule&#45;set.d.mts&#45;&gt;restrictions.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M635.5,-197.89C635.5,-182.42 635.5,-152.44 635.5,-152.44 635.5,-152.44 710.92,-152.44 710.92,-152.44"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="710.92,-154.54 716.92,-152.44 710.92,-150.34 710.92,-154.54"/>
</g>
<!-- cruise&#45;result.d.mts -->
<g id="node15" class="node">
<title>cruise&#45;result.d.mts</title>
<g id="a_node15"><a xlink:href="cruise-result.d.mts" xlink:title="cruise&#45;result.d.mts">
<path fill="#ddfeff" stroke="black" d="M453.96,-279.75C453.96,-279.75 375.54,-279.75 375.54,-279.75 372.58,-279.75 369.62,-276.79 369.62,-273.83 369.62,-273.83 369.62,-267.92 369.62,-267.92 369.62,-264.96 372.58,-262 375.54,-262 375.54,-262 453.96,-262 453.96,-262 456.92,-262 459.88,-264.96 459.88,-267.92 459.88,-267.92 459.88,-273.83 459.88,-273.83 459.88,-276.79 456.92,-279.75 453.96,-279.75"/>
<text xml:space="preserve" text-anchor="start" x="377.62" y="-267.2" font-family="Helvetica,sans-Serif" font-size="9.00">cruise&#45;result.d.mts</text>
</a>
</g>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;violations.d.mts -->
<g id="edge12" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;violations.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.31,-273.75C554.19,-273.75 760.5,-273.75 760.5,-273.75 760.5,-273.75 760.5,-264.73 760.5,-264.73"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="762.6,-264.73 760.5,-258.73 758.4,-264.73 762.6,-264.73"/>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;options.d.mts -->
<g id="edge8" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.22,-271.75C493,-271.75 531.5,-271.75 531.5,-271.75 531.5,-271.75 531.5,-175.63 531.5,-175.63"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="533.6,-175.63 531.5,-169.63 529.4,-175.63 533.6,-175.63"/>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;rule&#45;set.d.mts -->
<g id="edge9" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.2,-269.75C475.37,-269.75 488.5,-269.75 488.5,-269.75 488.5,-269.75 488.5,-213.31 488.5,-213.31 488.5,-213.31 604.01,-213.31 604.01,-213.31"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="604.01,-215.41 610.01,-213.31 604.01,-211.21 604.01,-215.41"/>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;rule&#45;summary.d.mts -->
<g id="edge10" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;rule&#45;summary.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.35,-275.75C574.69,-275.75 864.5,-275.75 864.5,-275.75 864.5,-275.75 864.5,-274.99 864.5,-274.99"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="866.6,-275.62 864.5,-269.62 862.4,-275.62 866.6,-275.62"/>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge11" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M414.5,-280.22C414.5,-282.03 414.5,-283.38 414.5,-283.38 414.5,-283.38 971.5,-283.38 971.5,-283.38 971.5,-283.38 971.5,-182.61 971.5,-182.61"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="973.6,-182.61 971.5,-176.61 969.4,-182.61 973.6,-182.61"/>
</g>
<!-- node_modules/watskeburt -->
<g id="node18" class="node">
<title>node_modules/watskeburt</title>
<g id="a_node18"><a xlink:href="https://www.npmjs.com/package/watskeburt" xlink:title="watskeburt">
<polygon fill="#c40b0a" fill-opacity="0.101961" stroke="black" points="557.5,-383.75 499.22,-383.75 497.25,-381.78 497.25,-366 555.53,-366 557.5,-367.97 557.5,-383.75"/>
<polyline fill="none" stroke="black" points="555.53,-381.78 497.25,-381.78"/>
<polyline fill="none" stroke="black" points="555.53,-381.78 555.53,-366"/>
<polyline fill="none" stroke="black" points="555.53,-381.78 557.5,-383.75"/>
<text xml:space="preserve" text-anchor="start" x="505.25" y="-371.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c40b0a">watskeburt</text>
</a>
</g>
</g>
<!-- cruise&#45;result.d.mts&#45;&gt;node_modules/watskeburt -->
<g id="edge13" class="edge">
<title>cruise&#45;result.d.mts&#45;&gt;node_modules/watskeburt</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.12,-277.75C482.81,-277.75 505.5,-277.75 505.5,-277.75 505.5,-277.75 505.5,-358.05 505.5,-358.05"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="503.4,-358.05 505.5,-364.05 507.6,-358.05 503.4,-358.05"/>
</g>
<!-- rule&#45;summary.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge40" class="edge">
<title>rule&#45;summary.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M848.5,-249.77C848.5,-227.81 848.5,-173.75 848.5,-173.75 848.5,-173.75 917.37,-173.75 917.37,-173.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.37,-175.85 923.37,-173.75 917.37,-171.65 917.37,-175.85"/>
</g>
<!-- dependency&#45;cruiser.d.mts -->
<g id="node19" class="node">
<title>dependency&#45;cruiser.d.mts</title>
<g id="a_node19"><a xlink:href="dependency-cruiser.d.mts" xlink:title="dependency&#45;cruiser.d.mts">
<path fill="#ddfeff" stroke="black" d="M318.46,-239.75C318.46,-239.75 208.54,-239.75 208.54,-239.75 205.58,-239.75 202.62,-236.79 202.62,-233.83 202.62,-233.83 202.62,-227.92 202.62,-227.92 202.62,-224.96 205.58,-222 208.54,-222 208.54,-222 318.46,-222 318.46,-222 321.42,-222 324.38,-224.96 324.38,-227.92 324.38,-227.92 324.38,-233.83 324.38,-233.83 324.38,-236.79 321.42,-239.75 318.46,-239.75"/>
<text xml:space="preserve" text-anchor="start" x="210.62" y="-227.2" font-family="Helvetica,sans-Serif" font-size="9.00">dependency&#45;cruiser.d.mts</text>
</a>
</g>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;configuration.d.mts -->
<g id="edge14" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;configuration.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M324.84,-230.35C372.13,-230.35 429.5,-230.35 429.5,-230.35 429.5,-230.35 429.5,-229.72 429.5,-229.72"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="431.6,-231.57 429.5,-225.57 427.4,-231.57 431.6,-231.57"/>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;options.d.mts -->
<g id="edge16" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M324.79,-232.7C401.65,-232.7 523.5,-232.7 523.5,-232.7 523.5,-232.7 523.5,-175.74 523.5,-175.74"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="525.6,-175.74 523.5,-169.74 521.4,-175.74 525.6,-175.74"/>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;rule&#45;set.d.mts -->
<g id="edge18" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M293.5,-221.62C293.5,-213.98 293.5,-204.4 293.5,-204.4 293.5,-204.4 603.76,-204.4 603.76,-204.4"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="603.76,-206.5 609.76,-204.4 603.76,-202.3 603.76,-206.5"/>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;cruise&#45;result.d.mts -->
<g id="edge15" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;cruise&#45;result.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M324.74,-235.05C360.83,-235.05 399.5,-235.05 399.5,-235.05 399.5,-235.05 399.5,-254.32 399.5,-254.32"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="397.4,-254.32 399.5,-260.32 401.6,-254.32 397.4,-254.32"/>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge19" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M263.5,-221.74C263.5,-204.92 263.5,-170.75 263.5,-170.75 263.5,-170.75 917.33,-170.75 917.33,-170.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.33,-172.85 923.33,-170.75 917.33,-168.65 917.33,-172.85"/>
</g>
<!-- resolve&#45;options.d.mts -->
<g id="node20" class="node">
<title>resolve&#45;options.d.mts</title>
<g id="a_node20"><a xlink:href="resolve-options.d.mts" xlink:title="resolve&#45;options.d.mts">
<path fill="#ddfeff" stroke="black" d="M460.33,-381.75C460.33,-381.75 369.17,-381.75 369.17,-381.75 366.21,-381.75 363.25,-378.79 363.25,-375.83 363.25,-375.83 363.25,-369.92 363.25,-369.92 363.25,-366.96 366.21,-364 369.17,-364 369.17,-364 460.33,-364 460.33,-364 463.29,-364 466.25,-366.96 466.25,-369.92 466.25,-369.92 466.25,-375.83 466.25,-375.83 466.25,-378.79 463.29,-381.75 460.33,-381.75"/>
<text xml:space="preserve" text-anchor="start" x="371.25" y="-369.2" font-family="Helvetica,sans-Serif" font-size="9.00">resolve&#45;options.d.mts</text>
</a>
</g>
</g>
<!-- dependency&#45;cruiser.d.mts&#45;&gt;resolve&#45;options.d.mts -->
<g id="edge17" class="edge">
<title>dependency&#45;cruiser.d.mts&#45;&gt;resolve&#45;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M324.58,-237.4C334.44,-237.4 341.5,-237.4 341.5,-237.4 341.5,-237.4 341.5,-370.88 341.5,-370.88 341.5,-370.88 355.57,-370.88 355.57,-370.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="355.57,-372.98 361.57,-370.88 355.57,-368.78 355.57,-372.98"/>
</g>
<!-- resolve&#45;options.d.mts&#45;&gt;node_modules/enhanced&#45;resolve -->
<g id="edge36" class="edge">
<title>resolve&#45;options.d.mts&#45;&gt;node_modules/enhanced&#45;resolve</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.5,-382.25C460.5,-390.6 460.5,-401.5 460.5,-401.5 460.5,-401.5 474.51,-401.5 474.51,-401.5"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="474.51,-403.6 480.51,-401.5 474.51,-399.4 474.51,-403.6"/>
</g>
<!-- eslint.config.mjs -->
<g id="node21" class="node">
<title>eslint.config.mjs</title>
<g id="a_node21"><a xlink:href="eslint.config.mjs" xlink:title="eslint.config.mjs">
<path fill="#ffffcc" stroke="black" d="M449.46,-563.75C449.46,-563.75 380.04,-563.75 380.04,-563.75 377.08,-563.75 374.12,-560.79 374.12,-557.83 374.12,-557.83 374.12,-551.92 374.12,-551.92 374.12,-548.96 377.08,-546 380.04,-546 380.04,-546 449.46,-546 449.46,-546 452.42,-546 455.38,-548.96 455.38,-551.92 455.38,-551.92 455.38,-557.83 455.38,-557.83 455.38,-560.79 452.42,-563.75 449.46,-563.75"/>
<text xml:space="preserve" text-anchor="start" x="382.12" y="-551.2" font-family="Helvetica,sans-Serif" font-size="9.00">eslint.config.mjs</text>
</a>
</g>
</g>
<!-- eslint.config.mjs&#45;&gt;@typescript&#45;eslint/parser -->
<g id="edge22" class="edge">
<title>eslint.config.mjs&#45;&gt;@typescript&#45;eslint/parser</title>
<g id="a_edge22"><a xlink:title="not&#45;to&#45;unresolvable">
<path fill="none" stroke="red" stroke-width="2" d="M455.73,-557.83C455.73,-557.83 490.94,-557.83 490.94,-557.83"/>
<polygon fill="red" stroke="red" stroke-width="2" points="490.94,-559.93 496.94,-557.83 490.94,-555.73 490.94,-559.93"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="513.08" y="-559.03" font-family="Helvetica,sans-Serif" font-size="9.00" fill="red">not&#45;to&#45;unresolvable</text>
</g>
<!-- node_modules/@eslint -->
<g id="node22" class="node">
<title>node_modules/@eslint</title>
<g id="a_node22"><a xlink:href="https://www.npmjs.com/package/" xlink:title="@eslint">
<polygon fill="#c40b0a" fill-opacity="0.101961" stroke="black" points="554.38,-503.75 502.35,-503.75 500.38,-501.78 500.38,-486 552.4,-486 554.38,-487.97 554.38,-503.75"/>
<polyline fill="none" stroke="black" points="552.4,-501.78 500.38,-501.78"/>
<polyline fill="none" stroke="black" points="552.4,-501.78 552.4,-486"/>
<polyline fill="none" stroke="black" points="552.4,-501.78 554.38,-503.75"/>
<text xml:space="preserve" text-anchor="start" x="512" y="-491.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c40b0a">@eslint</text>
</a>
</g>
</g>
<!-- eslint.config.mjs&#45;&gt;node_modules/@eslint -->
<g id="edge20" class="edge">
<title>eslint.config.mjs&#45;&gt;node_modules/@eslint</title>
<g id="a_edge20"><a xlink:title="not&#45;to&#45;dev&#45;dep">
<path fill="none" stroke="red" d="M414.5,-545.5C414.5,-528.62 414.5,-494.88 414.5,-494.88 414.5,-494.88 492.54,-494.88 492.54,-494.88"/>
<polygon fill="red" stroke="red" points="492.54,-496.98 498.54,-494.88 492.54,-492.78 492.54,-496.98"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="398.21" y="-486.32" font-family="Helvetica,sans-Serif" font-size="9.00" fill="red">not&#45;to&#45;dev&#45;dep</text>
</g>
<!-- node_modules/@typescript&#45;eslint -->
<g id="node23" class="node">
<title>node_modules/@typescript&#45;eslint</title>
<g id="a_node23"><a xlink:href="https://www.npmjs.com/package/" xlink:title="@typescript&#45;eslint">
<polygon fill="#c40b0a" fill-opacity="0.101961" stroke="black" points="571.75,-473.75 484.97,-473.75 483,-471.78 483,-456 569.78,-456 571.75,-457.97 571.75,-473.75"/>
<polyline fill="none" stroke="black" points="569.78,-471.78 483,-471.78"/>
<polyline fill="none" stroke="black" points="569.78,-471.78 569.78,-456"/>
<polyline fill="none" stroke="black" points="569.78,-471.78 571.75,-473.75"/>
<text xml:space="preserve" text-anchor="start" x="491" y="-461.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="#c40b0a">@typescript&#45;eslint</text>
</a>
</g>
</g>
<!-- eslint.config.mjs&#45;&gt;node_modules/@typescript&#45;eslint -->
<g id="edge21" class="edge">
<title>eslint.config.mjs&#45;&gt;node_modules/@typescript&#45;eslint</title>
<g id="a_edge21"><a xlink:title="not&#45;to&#45;dev&#45;dep">
<path fill="none" stroke="red" d="M455.82,-551.92C474.07,-551.92 491.5,-551.92 491.5,-551.92 491.5,-551.92 491.5,-481.7 491.5,-481.7"/>
<polygon fill="red" stroke="red" points="493.6,-481.7 491.5,-475.7 489.4,-481.7 493.6,-481.7"/>
</a>
</g>
<text xml:space="preserve" text-anchor="middle" x="461.5" y="-526.1" font-family="Helvetica,sans-Serif" font-size="9.00" fill="red">not&#45;to&#45;dev&#45;dep</text>
</g>
<!-- path -->
<g id="node24" class="node">
<title>path</title>
<g id="a_node24"><a xlink:href="https://nodejs.org/api/path.html" xlink:title="path">
<path fill="#ffffcc" stroke="grey" d="M548.46,-645.75C548.46,-645.75 506.29,-645.75 506.29,-645.75 503.33,-645.75 500.38,-642.79 500.38,-639.83 500.38,-639.83 500.38,-633.92 500.38,-633.92 500.38,-630.96 503.33,-628 506.29,-628 506.29,-628 548.46,-628 548.46,-628 551.42,-628 554.38,-630.96 554.38,-633.92 554.38,-633.92 554.38,-639.83 554.38,-639.83 554.38,-642.79 551.42,-645.75 548.46,-645.75"/>
<text xml:space="preserve" text-anchor="start" x="518.38" y="-633.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="grey">path</text>
</a>
</g>
</g>
<!-- eslint.config.mjs&#45;&gt;path -->
<g id="edge23" class="edge">
<title>eslint.config.mjs&#45;&gt;path</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" stroke-opacity="0.200000" d="M401.5,-563.96C401.5,-585.31 401.5,-636.88 401.5,-636.88 401.5,-636.88 492.55,-636.88 492.55,-636.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-opacity="0.200000" points="492.55,-638.98 498.55,-636.88 492.55,-634.78 492.55,-638.98"/>
</g>
<!-- url -->
<g id="node25" class="node">
<title>url</title>
<g id="a_node25"><a xlink:href="https://nodejs.org/api/url.html" xlink:title="url">
<path fill="#ffffcc" stroke="grey" d="M548.46,-615.75C548.46,-615.75 506.29,-615.75 506.29,-615.75 503.33,-615.75 500.38,-612.79 500.38,-609.83 500.38,-609.83 500.38,-603.92 500.38,-603.92 500.38,-600.96 503.33,-598 506.29,-598 506.29,-598 548.46,-598 548.46,-598 551.42,-598 554.38,-600.96 554.38,-603.92 554.38,-603.92 554.38,-609.83 554.38,-609.83 554.38,-612.79 551.42,-615.75 548.46,-615.75"/>
<text xml:space="preserve" text-anchor="start" x="522.12" y="-603.2" font-family="Helvetica,sans-Serif" font-size="9.00" fill="grey">url</text>
</a>
</g>
</g>
<!-- eslint.config.mjs&#45;&gt;url -->
<g id="edge24" class="edge">
<title>eslint.config.mjs&#45;&gt;url</title>
<path fill="none" stroke="#000000" stroke-dasharray="5,2" stroke-opacity="0.200000" d="M428.5,-563.93C428.5,-578.83 428.5,-606.88 428.5,-606.88 428.5,-606.88 492.58,-606.88 492.58,-606.88"/>
<polygon fill="#000000" fill-opacity="0.200000" stroke="#000000" stroke-opacity="0.200000" points="492.58,-608.98 498.58,-606.88 492.58,-604.78 492.58,-608.98"/>
</g>
<!-- filter&#45;types.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge25" class="edge">
<title>filter&#45;types.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M802.05,-120.88C857.28,-120.88 948.5,-120.88 948.5,-120.88 948.5,-120.88 948.5,-149.26 948.5,-149.26"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="946.4,-149.26 948.5,-155.26 950.6,-149.26 946.4,-149.26"/>
</g>
<!-- reporter&#45;options.d.mts&#45;&gt;filter&#45;types.d.mts -->
<g id="edge35" class="edge">
<title>reporter&#45;options.d.mts&#45;&gt;filter&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M700,-120.58C700,-120.58 712.19,-120.58 712.19,-120.58"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="712.19,-122.68 718.19,-120.58 712.19,-118.48 712.19,-122.68"/>
</g>
<!-- plugins/3d&#45;reporter&#45;plugin.d.mts -->
<g id="node28" class="node">
<title>plugins/3d&#45;reporter&#45;plugin.d.mts</title>
<g id="a_node28"><a xlink:href="plugins/3d-reporter-plugin.d.mts" xlink:title="3d&#45;reporter&#45;plugin.d.mts">
<path fill="#ddfeff" stroke="black" d="M137.08,-209.75C137.08,-209.75 34.67,-209.75 34.67,-209.75 31.71,-209.75 28.75,-206.79 28.75,-203.83 28.75,-203.83 28.75,-197.92 28.75,-197.92 28.75,-194.96 31.71,-192 34.67,-192 34.67,-192 137.08,-192 137.08,-192 140.04,-192 143,-194.96 143,-197.92 143,-197.92 143,-203.83 143,-203.83 143,-206.79 140.04,-209.75 137.08,-209.75"/>
<text xml:space="preserve" text-anchor="start" x="36.75" y="-197.2" font-family="Helvetica,sans-Serif" font-size="9.00">3d&#45;reporter&#45;plugin.d.mts</text>
</a>
</g>
</g>
<!-- plugins/3d&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts -->
<g id="edge32" class="edge">
<title>plugins/3d&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M143.37,-201.2C184.82,-201.2 233.5,-201.2 233.5,-201.2 233.5,-201.2 233.5,-214.3 233.5,-214.3"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="231.4,-214.3 233.5,-220.3 235.6,-214.3 231.4,-214.3"/>
</g>
<!-- plugins/mermaid&#45;reporter&#45;plugin.d.mts -->
<g id="node29" class="node">
<title>plugins/mermaid&#45;reporter&#45;plugin.d.mts</title>
<g id="a_node29"><a xlink:href="plugins/mermaid-reporter-plugin.d.mts" xlink:title="mermaid&#45;reporter&#45;plugin.d.mts">
<path fill="#ddfeff" stroke="black" d="M149.83,-239.75C149.83,-239.75 21.92,-239.75 21.92,-239.75 18.96,-239.75 16,-236.79 16,-233.83 16,-233.83 16,-227.92 16,-227.92 16,-224.96 18.96,-222 21.92,-222 21.92,-222 149.83,-222 149.83,-222 152.79,-222 155.75,-224.96 155.75,-227.92 155.75,-227.92 155.75,-233.83 155.75,-233.83 155.75,-236.79 152.79,-239.75 149.83,-239.75"/>
<text xml:space="preserve" text-anchor="start" x="24" y="-227.2" font-family="Helvetica,sans-Serif" font-size="9.00">mermaid&#45;reporter&#45;plugin.d.mts</text>
</a>
</g>
</g>
<!-- plugins/mermaid&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts -->
<g id="edge33" class="edge">
<title>plugins/mermaid&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M156.08,-230.88C156.08,-230.88 194.63,-230.88 194.63,-230.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="194.63,-232.98 200.63,-230.88 194.63,-228.78 194.63,-232.98"/>
</g>
<!-- plugins/stats&#45;reporter&#45;plugin.d.mts -->
<g id="node30" class="node">
<title>plugins/stats&#45;reporter&#45;plugin.d.mts</title>
<g id="a_node30"><a xlink:href="plugins/stats-reporter-plugin.d.mts" xlink:title="stats&#45;reporter&#45;plugin.d.mts">
<path fill="#ddfeff" stroke="black" d="M141.21,-269.75C141.21,-269.75 30.54,-269.75 30.54,-269.75 27.58,-269.75 24.62,-266.79 24.62,-263.83 24.62,-263.83 24.62,-257.92 24.62,-257.92 24.62,-254.96 27.58,-252 30.54,-252 30.54,-252 141.21,-252 141.21,-252 144.17,-252 147.12,-254.96 147.12,-257.92 147.12,-257.92 147.12,-263.83 147.12,-263.83 147.12,-266.79 144.17,-269.75 141.21,-269.75"/>
<text xml:space="preserve" text-anchor="start" x="32.62" y="-257.2" font-family="Helvetica,sans-Serif" font-size="9.00">stats&#45;reporter&#45;plugin.d.mts</text>
</a>
</g>
</g>
<!-- plugins/stats&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts -->
<g id="edge34" class="edge">
<title>plugins/stats&#45;reporter&#45;plugin.d.mts&#45;&gt;dependency&#45;cruiser.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M147.5,-265.88C198.8,-265.88 263.5,-265.88 263.5,-265.88 263.5,-265.88 263.5,-247.58 263.5,-247.58"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="265.6,-247.58 263.5,-241.58 261.4,-247.58 265.6,-247.58"/>
</g>
<!-- restrictions.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge37" class="edge">
<title>restrictions.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M760.5,-160.05C760.5,-161.07 760.5,-161.75 760.5,-161.75 760.5,-161.75 917.45,-161.75 917.45,-161.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.45,-163.85 923.45,-161.75 917.45,-159.65 917.45,-163.85"/>
</g>
<!-- strict&#45;filter&#45;types.d.mts -->
<g id="node32" class="node">
<title>strict&#45;filter&#45;types.d.mts</title>
<g id="a_node32"><a xlink:href="strict-filter-types.d.mts" xlink:title="strict&#45;filter&#45;types.d.mts">
<path fill="#ddfeff" stroke="black" d="M693.08,-17.75C693.08,-17.75 601.17,-17.75 601.17,-17.75 598.21,-17.75 595.25,-14.79 595.25,-11.83 595.25,-11.83 595.25,-5.92 595.25,-5.92 595.25,-2.96 598.21,0 601.17,0 601.17,0 693.08,0 693.08,0 696.04,0 699,-2.96 699,-5.92 699,-5.92 699,-11.83 699,-11.83 699,-14.79 696.04,-17.75 693.08,-17.75"/>
<text xml:space="preserve" text-anchor="start" x="603.25" y="-5.2" font-family="Helvetica,sans-Serif" font-size="9.00">strict&#45;filter&#45;types.d.mts</text>
</a>
</g>
</g>
<!-- strict&#45;filter&#45;types.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge42" class="edge">
<title>strict&#45;filter&#45;types.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M699.28,-5.92C796.47,-5.92 995.5,-5.92 995.5,-5.92 995.5,-5.92 995.5,-149.3 995.5,-149.3"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="993.4,-149.3 995.5,-155.3 997.6,-149.3 993.4,-149.3"/>
</g>
<!-- strict&#45;filter&#45;types.d.mts&#45;&gt;filter&#45;types.d.mts -->
<g id="edge41" class="edge">
<title>strict&#45;filter&#45;types.d.mts&#45;&gt;filter&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M699.5,-11.83C729.2,-11.83 760.5,-11.83 760.5,-11.83 760.5,-11.83 760.5,-104.06 760.5,-104.06"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="758.4,-104.06 760.5,-110.06 762.6,-104.06 758.4,-104.06"/>
</g>
<!-- strict&#45;options.d.mts -->
<g id="node33" class="node">
<title>strict&#45;options.d.mts</title>
<g id="a_node33"><a xlink:href="strict-options.d.mts" xlink:title="strict&#45;options.d.mts">
<path fill="#ddfeff" stroke="black" d="M454.71,-73.75C454.71,-73.75 374.79,-73.75 374.79,-73.75 371.83,-73.75 368.88,-70.79 368.88,-67.83 368.88,-67.83 368.88,-61.92 368.88,-61.92 368.88,-58.96 371.83,-56 374.79,-56 374.79,-56 454.71,-56 454.71,-56 457.67,-56 460.62,-58.96 460.62,-61.92 460.62,-61.92 460.62,-67.83 460.62,-67.83 460.62,-70.79 457.67,-73.75 454.71,-73.75"/>
<text xml:space="preserve" text-anchor="start" x="376.88" y="-61.2" font-family="Helvetica,sans-Serif" font-size="9.00">strict&#45;options.d.mts</text>
</a>
</g>
</g>
<!-- strict&#45;options.d.mts&#45;&gt;cache&#45;options.d.mts -->
<g id="edge43" class="edge">
<title>strict&#45;options.d.mts&#45;&gt;cache&#45;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M437.5,-74.03C437.5,-81.88 437.5,-91.92 437.5,-91.92 437.5,-91.92 590.46,-91.92 590.46,-91.92"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="590.46,-94.02 596.46,-91.92 590.46,-89.82 590.46,-94.02"/>
</g>
<!-- strict&#45;options.d.mts&#45;&gt;options.d.mts -->
<g id="edge44" class="edge">
<title>strict&#45;options.d.mts&#45;&gt;options.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M414.5,-74.23C414.5,-98.01 414.5,-158.88 414.5,-158.88 414.5,-158.88 484.46,-158.88 484.46,-158.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="484.46,-160.98 490.46,-158.88 484.46,-156.78 484.46,-160.98"/>
</g>
<!-- strict&#45;options.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge45" class="edge">
<title>strict&#45;options.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M391.5,-74.18C391.5,-99.85 391.5,-169.75 391.5,-169.75 391.5,-169.75 917.36,-169.75 917.36,-169.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.36,-171.85 923.36,-169.75 917.36,-167.65 917.36,-171.85"/>
</g>
<!-- strict&#45;options.d.mts&#45;&gt;strict&#45;filter&#45;types.d.mts -->
<g id="edge46" class="edge">
<title>strict&#45;options.d.mts&#45;&gt;strict&#45;filter&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M414.5,-55.63C414.5,-39.72 414.5,-8.88 414.5,-8.88 414.5,-8.88 587.41,-8.88 587.41,-8.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="587.41,-10.98 593.41,-8.88 587.41,-6.78 587.41,-10.98"/>
</g>
<!-- strict&#45;rule&#45;set.d.mts -->
<g id="node34" class="node">
<title>strict&#45;rule&#45;set.d.mts</title>
<g id="a_node34"><a xlink:href="strict-rule-set.d.mts" xlink:title="strict&#45;rule&#45;set.d.mts">
<path fill="#ddfeff" stroke="black" d="M567.71,-73.75C567.71,-73.75 487.04,-73.75 487.04,-73.75 484.08,-73.75 481.12,-70.79 481.12,-67.83 481.12,-67.83 481.12,-61.92 481.12,-61.92 481.12,-58.96 484.08,-56 487.04,-56 487.04,-56 567.71,-56 567.71,-56 570.67,-56 573.62,-58.96 573.62,-61.92 573.62,-61.92 573.62,-67.83 573.62,-67.83 573.62,-70.79 570.67,-73.75 567.71,-73.75"/>
<text xml:space="preserve" text-anchor="start" x="489.12" y="-61.2" font-family="Helvetica,sans-Serif" font-size="9.00">strict&#45;rule&#45;set.d.mts</text>
</a>
</g>
</g>
<!-- strict&#45;options.d.mts&#45;&gt;strict&#45;rule&#45;set.d.mts -->
<g id="edge47" class="edge">
<title>strict&#45;options.d.mts&#45;&gt;strict&#45;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M460.88,-64.88C460.88,-64.88 473.25,-64.88 473.25,-64.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="473.25,-66.98 479.25,-64.88 473.25,-62.78 473.25,-66.98"/>
</g>
<!-- strict&#45;rule&#45;set.d.mts&#45;&gt;rule&#45;set.d.mts -->
<g id="edge50" class="edge">
<title>strict&#45;rule&#45;set.d.mts&#45;&gt;rule&#45;set.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M565.5,-74.14C565.5,-104.57 565.5,-199.6 565.5,-199.6 565.5,-199.6 604.05,-199.6 604.05,-199.6"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="604.05,-201.7 610.05,-199.6 604.05,-197.5 604.05,-201.7"/>
</g>
<!-- strict&#45;rule&#45;set.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge51" class="edge">
<title>strict&#45;rule&#45;set.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M569.5,-74.09C569.5,-99.52 569.5,-168.75 569.5,-168.75 569.5,-168.75 917.42,-168.75 917.42,-168.75"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="917.42,-170.85 923.42,-168.75 917.42,-166.65 917.42,-170.85"/>
</g>
<!-- strict&#45;restrictions.d.mts -->
<g id="node35" class="node">
<title>strict&#45;restrictions.d.mts</title>
<g id="a_node35"><a xlink:href="strict-restrictions.d.mts" xlink:title="strict&#45;restrictions.d.mts">
<path fill="#ddfeff" stroke="black" d="M694.21,-73.75C694.21,-73.75 600.04,-73.75 600.04,-73.75 597.08,-73.75 594.12,-70.79 594.12,-67.83 594.12,-67.83 594.12,-61.92 594.12,-61.92 594.12,-58.96 597.08,-56 600.04,-56 600.04,-56 694.21,-56 694.21,-56 697.17,-56 700.12,-58.96 700.12,-61.92 700.12,-61.92 700.12,-67.83 700.12,-67.83 700.12,-70.79 697.17,-73.75 694.21,-73.75"/>
<text xml:space="preserve" text-anchor="start" x="602.12" y="-61.2" font-family="Helvetica,sans-Serif" font-size="9.00">strict&#45;restrictions.d.mts</text>
</a>
</g>
</g>
<!-- strict&#45;rule&#45;set.d.mts&#45;&gt;strict&#45;restrictions.d.mts -->
<g id="edge52" class="edge">
<title>strict&#45;rule&#45;set.d.mts&#45;&gt;strict&#45;restrictions.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M574.02,-64.88C574.02,-64.88 586.14,-64.88 586.14,-64.88"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="586.14,-66.98 592.14,-64.88 586.14,-62.78 586.14,-66.98"/>
</g>
<!-- strict&#45;restrictions.d.mts&#45;&gt;shared&#45;types.d.mts -->
<g id="edge49" class="edge">
<title>strict&#45;restrictions.d.mts&#45;&gt;shared&#45;types.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M700.33,-61.92C792.35,-61.92 971.5,-61.92 971.5,-61.92 971.5,-61.92 971.5,-149.14 971.5,-149.14"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="969.4,-149.14 971.5,-155.14 973.6,-149.14 969.4,-149.14"/>
</g>
<!-- strict&#45;restrictions.d.mts&#45;&gt;restrictions.d.mts -->
<g id="edge48" class="edge">
<title>strict&#45;restrictions.d.mts&#45;&gt;restrictions.d.mts</title>
<path fill="none" stroke="#000000" stroke-opacity="0.200000" d="M700.54,-67.83C708.72,-67.83 714.5,-67.83 714.5,-67.83 714.5,-67.83 714.5,-146 714.5,-146 714.5,-146 714.9,-146 714.9,-146"/>
<polygon fill="none" stroke="#000000" stroke-opacity="0.200000" points="710.94,-148.1 716.94,-146 710.94,-143.9 710.94,-148.1"/>
</g>
</g>
</svg>
    <script>
      var gMode = new Mode();

var title2ElementMap = (function makeElementMap() {
  /** @type {NodeListOf<SVGGElement>} */
  var nodes = document.querySelectorAll(".node");
  /** @type {NodeListOf<SVGGElement>} */
  var edges = document.querySelectorAll(".edge");
  return new Title2ElementMap(edges, nodes);
})();

function getHoverHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function hoverHighlightHandler(pMouseEvent) {
    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (
      currentHighlightedTitle !== closestTitleText &&
      gMode.get() === gMode.HOVER
    ) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}

function getSelectHandler(pTitle2ElementMap) {
  /** @type {string} */
  var currentHighlightedTitle = "";

  /** @param {MouseEvent} pMouseEvent */
  return function selectHighlightHandler(pMouseEvent) {
    pMouseEvent.preventDefault();

    var closestNodeOrEdge = pMouseEvent.target.closest(".edge, .node");
    var closestTitleText = getTitleText(closestNodeOrEdge);

    if (closestNodeOrEdge) {
      gMode.setToSelect();
    } else {
      gMode.setToHover();
    }
    if (currentHighlightedTitle !== closestTitleText) {
      resetNodesAndEdges();
      addHighlight(closestNodeOrEdge);
      pTitle2ElementMap.get(closestTitleText).forEach(addHighlight);
      currentHighlightedTitle = closestTitleText;
    }
  };
}
function Mode() {
  var HOVER = 1;
  var SELECT = 2;

  function setToHover() {
    this._mode = HOVER;
  }
  function setToSelect() {
    this._mode = SELECT;
  }

  /**
   * @returns {number}
   */
  function get() {
    return this._mode || HOVER;
  }

  return {
    HOVER: HOVER,
    SELECT: SELECT,
    setToHover: setToHover,
    setToSelect: setToSelect,
    get: get,
  };
}

/**
 *
 * @param {SVGGelement[]} pEdges
 * @param {SVGGElement[]} pNodes
 * @return {{get: (pTitleText:string) => SVGGElement[]}}
 */
function Title2ElementMap(pEdges, pNodes) {
  /* {{[key: string]: SVGGElement[]}} */
  var elementMap = buildMap(pEdges, pNodes);

  /**
   * @param {NodeListOf<SVGGElement>} pEdges
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement[]}}
   */
  function buildMap(pEdges, pNodes) {
    var title2NodeMap = buildTitle2NodeMap(pNodes);

    return nodeListToArray(pEdges).reduce(addEdgeToMap(title2NodeMap), {});
  }
  /**
   * @param {NodeListOf<SVGGElement>} pNodes
   * @return {{[key: string]: SVGGElement}}
   */
  function buildTitle2NodeMap(pNodes) {
    return nodeListToArray(pNodes).reduce(addNodeToMap, {});
  }

  function addNodeToMap(pMap, pNode) {
    var titleText = getTitleText(pNode);

    if (titleText) {
      pMap[titleText] = pNode;
    }
    return pMap;
  }

  function addEdgeToMap(pNodeMap) {
    return function (pEdgeMap, pEdge) {
      /** @type {string} */
      var titleText = getTitleText(pEdge);

      if (titleText) {
        var edge = pryEdgeFromTitle(titleText);

        pEdgeMap[titleText] = [pNodeMap[edge.from], pNodeMap[edge.to]];
        (pEdgeMap[edge.from] || (pEdgeMap[edge.from] = [])).push(pEdge);
        (pEdgeMap[edge.to] || (pEdgeMap[edge.to] = [])).push(pEdge);
      }
      return pEdgeMap;
    };
  }

  /**
   *
   * @param {string} pString
   * @return {{from?: string; to?:string;}}
   */
  function pryEdgeFromTitle(pString) {
    var nodeNames = pString.split(/\s*->\s*/);

    return {
      from: nodeNames.shift(),
      to: nodeNames.shift(),
    };
  }
  /**
   *
   * @param {string} pTitleText
   * @return {SVGGElement[]}
   */
  function get(pTitleText) {
    return (pTitleText && elementMap[pTitleText]) || [];
  }
  return {
    get: get,
  };
}

/**
 * @param {SVGGElement} pGElement
 * @return {string?}
 */
function getTitleText(pGElement) {
  /** @type {SVGTitleElement} */
  var title = pGElement && pGElement.querySelector("title");
  /** @type {string} */
  var titleText = title && title.textContent;

  if (titleText) {
    titleText = titleText.trim();
  }
  return titleText;
}

/**
 * @param {NodeListOf<Element>} pNodeList
 * @return {Element[]}
 */
function nodeListToArray(pNodeList) {
  var lReturnValue = [];

  pNodeList.forEach(function (pElement) {
    lReturnValue.push(pElement);
  });

  return lReturnValue;
}

function resetNodesAndEdges() {
  nodeListToArray(document.querySelectorAll(".current")).forEach(
    removeHighlight,
  );
}

/**
 * @param {SVGGElement} pGElement
 */
function removeHighlight(pGElement) {
  if (pGElement && pGElement.classList) {
    pGElement.classList.remove("current");
  }
}

/**
 * @param {SVGGElement} pGroup
 */
function addHighlight(pGroup) {
  if (pGroup && pGroup.classList) {
    pGroup.classList.add("current");
  }
}

var gHints = {
  HIDDEN: 1,
  SHOWN: 2,
  state: 1, // === HIDDEN
  show: function () {
    document.getElementById("hints").removeAttribute("style");
    gHints.state = gHints.SHOWN;
  },
  hide: function () {
    document.getElementById("hints").style = "display:none";
    gHints.state = gHints.HIDDEN;
  },
  toggle: function () {
    if ((gHints.state || gHints.HIDDEN) === gHints.HIDDEN) {
      gHints.show();
    } else {
      gHints.hide();
    }
  },
};

/** @param {KeyboardEvent} pKeyboardEvent */
function keyboardEventHandler(pKeyboardEvent) {
  if (pKeyboardEvent.key === "Escape") {
    resetNodesAndEdges();
    gMode.setToHover();
    gHints.hide();
  }
  if (pKeyboardEvent.key === "F1") {
    pKeyboardEvent.preventDefault();
    gHints.toggle();
  }
}

document.addEventListener("contextmenu", getSelectHandler(title2ElementMap));
document.addEventListener("mouseover", getHoverHandler(title2ElementMap));
document.addEventListener("keydown", keyboardEventHandler);
document.getElementById("close-hints").addEventListener("click", gHints.hide);
document.getElementById("button_help").addEventListener("click", gHints.toggle);
document.querySelector("svg").insertAdjacentHTML(
  "afterbegin",
  `<linearGradient id="edgeGradient">
      <stop offset="0%" stop-color="fuchsia"/>
      <stop offset="100%" stop-color="purple"/>
   </linearGradient>
  `,
);

// Add a small increment to the last value of the path to make gradients on
// horizontal paths work. Without them all browsers I tested with (firefox,
// chrome) do not render the gradient, but instead make the line transparent
// (or the color of the background, I haven't looked into it that deeply,
// but for the hack it doesn't matter which).
function skewLineABit(lDrawingInstructions) {
  var lLastValue = lDrawingInstructions.match(/(\d+\.?\d*)$/)[0];
  // Smaller values than .001 _should_ work as well, but don't in all
  // cases. Even this value is so small that it is not visible to the
  // human eye (tested with the two I have at my disposal).
  var lIncrement = 0.001;
  var lNewLastValue = parseFloat(lLastValue) + lIncrement;

  return lDrawingInstructions.replace(lLastValue, lNewLastValue);
}

nodeListToArray(document.querySelectorAll("path"))
  .filter(function (pElement) {
    return pElement.parentElement.classList.contains("edge");
  })
  .forEach(function (pElement) {
    pElement.attributes.d.value = skewLineABit(pElement.attributes.d.value);
  });

    </script>
  </body>
</html>
